// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程：https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
const collectionName = "roles";
module.exports = {
	_before: function() { // 通用预处理器

	},
	/** - 添加数据
	 * @param data 要添加的数据
	 * @return {object} 返回添加成功/失败数据 
	 * */
	async addData(data) {
		// 参数校验，如无参数则不需要
		if (!data) return {
			errCode: 'PARAM_IS_NULL',
			errMsg: '缺少参数'
		};
		const db = uniCloud.databaseForJQL();
		try {
			const Roles = uniCloud.importObject("roles",{customUI:true});
			let roleId = await Roles.isRoleId(data.role_id);
			if(roleId.result){
				return { code:1004,message:'唯一索引已存在' }
			}
			const result = await db.collection(collectionName).add(data);
			// 返回结果
			return {
				code: 200,
				message: "添加成功",
				result: result
			}
		} catch (error) {
			// 返回结果
			return {message: '内部错误',error: error}
		}
	},
	/**
	 * 修改数据
	 * @param data 要修改的数据
	 * @param where  修改条件
	 * @returns {object} 返回classify表内容
	 */
	async updateData(data,where) {
		// 参数校验，如无参数则不需要
		if (!data,!where) return {errCode: 'PARAM_IS_NULL',errMsg: '参数不能为空'} ;
		const db = uniCloud.database() ;
		try{
			delete data._id ; // 删除_id
			const result = await db.collection(collectionName).where(where).update(data) ;
			// 返回结果
			return {code:200,message:"修改成功",result:result}
		}catch(error){
			// 返回结果
			return {message:'内部错误',error }
		}
	},
	/**
	 * 查询role_id是否唯一
	 * @param roleId 唯一索引
	 * @returns {object} 返回true或者false
	 */
	async isRoleId(roleId){
		if (!roleId) return {errCode: 'PARAM_IS_NULL',errMsg: '参数不能为空'} ;
		const db = uniCloud.database() ;
		try{
			const result = await db.collection(collectionName).where({role_id:roleId}).get();
			return {
				code:200,
				message:"查询成功",
				result:result.affectedDocs == 0? false:true
			}
		}catch(error){
			return {message:'内部错误',error }
		}
	},
	
	/**
	 * 删除数据
	 * @param uid String 数据的_id 
	 * @returns {object} 返回删除成功
	 */
	async deleteData(uid) {
		// 参数校验，如无参数则不需要
		if (!uid) return {errCode: 'PARAM_IS_NULL',errMsg: '缺少参数'} ;
		const db = uniCloud.databaseForJQL() ;
		try{
			const data = await db.collection(collectionName).doc(uid).remove() ;
			// 返回结果
			return { code:200,message:"删除成功",result:data }
		}catch(error){
			// 返回结果
			return {message:'内部错误',error }
		}
	},
}